home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 12 / Cream of the Crop 12 (Part II) / Cream of the Crop 12 (Part II).iso / OS2 / GNUSUTIL.ZIP / lib / stime.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-12-17  |  1.6 KB  |  67 lines

  1. /* stime -- set the system clock
  2.    Copyright (C) 1989, 1991 Free Software Foundation, Inc.
  3.  
  4.    This program is free software; you can redistribute it and/or modify
  5.    it under the terms of the GNU General Public License as published by
  6.    the Free Software Foundation; either version 2, or (at your option)
  7.    any later version.
  8.  
  9.    This program is distributed in the hope that it will be useful,
  10.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12.    GNU General Public License for more details.
  13.  
  14.    You should have received a copy of the GNU General Public License
  15.    along with this program; if not, write to the Free Software
  16.    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  17.  
  18. /* David MacKenzie <djm@ai.mit.edu> */
  19.  
  20. #ifdef HAVE_CONFIG_H
  21. #include <config.h>
  22. #endif
  23.  
  24. #include <sys/types.h>
  25. #include <sys/time.h>
  26.  
  27. /* Set the system time to *WHEN seconds past the start of 1970 GMT. */
  28.  
  29. #ifndef OS2
  30.  
  31. int
  32. stime (when)
  33.      time_t *when;
  34. {
  35.   struct timeval tv;
  36.  
  37.   tv.tv_sec = *when;
  38.   tv.tv_usec = 0;
  39.   return settimeofday (&tv, (struct timezone *) 0);
  40. }
  41.  
  42. #else
  43.  
  44. #include <os2.h>
  45.  
  46. int stime(time_t *newtime)
  47. {
  48.   struct tm *newtm = localtime(newtime);
  49.   DATETIME dt;
  50.  
  51.   dt.hours   = newtm -> tm_hour;
  52.   dt.minutes = newtm -> tm_min;
  53.   dt.seconds = newtm -> tm_sec;
  54.   dt.hundredths = 0;
  55.  
  56.   dt.day     = newtm -> tm_mday;
  57.   dt.month   = newtm -> tm_mon + 1;
  58.   dt.year    = newtm -> tm_year + 1900;
  59.   dt.weekday = newtm -> tm_wday;
  60.  
  61.   dt.timezone = -1;
  62.  
  63.   return DosSetDateTime(&dt) ? -1 : 0;
  64. }
  65.  
  66. #endif
  67.